package main

import "fmt"

/**
defer 和 return 谁先谁后
*/

func deferFunc() int {
	fmt.Println("defer func  called")
	return 0
}

func returnFunc() int {
	fmt.Println("return func  called")
	return 0
}

func returnAndDefer() int {
	//defer 和 return 会先执行return
	//然后defer 会在return后去执行
	defer deferFunc()
	return returnFunc()
}

func main() {

	//写入defer关键字
	// 相当于最后执行
	defer fmt.Println("main end1")
	//会从后往前执行
	defer fmt.Println("main end2")

	fmt.Println("hello go test 1")
	fmt.Println("hello go test 2")

	returnAndDefer()
}
